package cn.liccshop.core.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

import cn.liccshop.sys.base.BaseBean;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 菜单表
 * </p>
 *
 * @author LiCC
 * @since 2019-04-05
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "sys_sys_menu")
public class SysSysMenu extends BaseBean {

private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId(value = "id", type = IdType.UUID)
    private String id;

    /**
     * 父级编号
     */
    @TableField("parent_id")
    private String parentId;

    /**
     * 类型
     */
    @TableField("type")
    private Integer type;

    /**
     * 排序
     */
    @TableField("sort")
    private Integer sort;

    /**
     * 一级菜单path 多级为null
     */
    @TableField("path_first")
    private String pathFirst;

    /**
     * vue组件路径,一级菜单时默认为“layout/Layout”，多级默认null
     */
    @TableField("component_first")
    private String componentFirst;

    /**
     * 一级菜单时默认为“index”
     */
    @TableField("path")
    private String path;

    @TableField("component")
    private String component;

    /**
     * 叶子级菜单为null
     */
    @TableField("redirect")
    private String redirect;

    /**
     * 显示与该名称对应的标题
     */
    @TableField("name")
    private String name;

    /**
     * 标题
     */
    @TableField("title")
    private String title;

    /**
     * 图标
     */
    @TableField("icon")
    private String icon;

    /**
     * 页面缓存,1-true;0-false
     */
    @TableField("no_cache")
    private Integer noCache;

    /**
     * 是否在菜单中显示
     */
    @TableField("is_show")
    private Integer isShow;

    /**
     * 权限标识
     */
    @TableField("permission")
    private String permission;

    /**
     * 状态
     */
    @TableField("status")
    private String status;

    /**
     * 创建者
     */
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_date", fill = FieldFill.INSERT)
    private LocalDateTime createDate;

    /**
     * 更新者
     */
    @TableField(value = "update_by", fill = FieldFill.UPDATE)
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_date", fill = FieldFill.UPDATE)
    private LocalDateTime updateDate;

    /**
     * 备注信息
     */
    @TableField("remarks")
    private String remarks;

    /**
     * 删除标记
     */
    @TableField("del_flag")
    private Integer delFlag;

    /**
     * 前端管理员导航栏需要字段
     */
    @TableField(exist = false)
    private List<SysSysMenu> children;

    /**
     * 前端管理员导航栏需要字段
     */
    @TableField(exist = false)
    private Map<String, Object> meta;
    /**
     * 前端管理员导航栏需要字段
     */
    @TableField(exist = false)
    private String hidden;

}
